//get和set相当于修饰，官方成为数据描述符，
//这里每次在外部js模块中使用读取到current的时候，就会执行get修饰的代码 get current
//每次在外部通过position.current = {.....},这种修改的方式，就会执行set current的代码，
//这里是利用了，其实就是getter和setter

// 扩展2种Storage的存储对象的能力。
//setItem和getItem是storage上的方法，用来存储本地数据
Storage.prototype.set = function (key, value) {
  this.setItem(key, JSON.stringify(value));
};
Storage.prototype.get = function (key) {
  return JSON.parse(this.getItem(key));
};

// 当前城市的常量
const CURRENT_CITY_KEY = "CURRENT_CITY";
// 地图缓存常量
const MAP_INFO_KEY = "MAP_INFO";

// 当前城市值的访问。

export const position = {
  get current() {
    return localStorage.get(CURRENT_CITY_KEY);
  },

  set current(value) {
    localStorage.set(CURRENT_CITY_KEY, value);
  },
};

// 地图缓存
export const mapStore = {
  clear() {
    sessionStorage.removeItem(MAP_INFO_KEY);
  },

  get info() {
    return sessionStorage.get(MAP_INFO_KEY);
  },

  set info(value) {
    sessionStorage.set(MAP_INFO_KEY, value);
  },
};
